#ifndef _atomic_0822_protocol_conversion_service_H_
#define _atomic_0822_protocol_conversion_service_H_

/*------------------------ Include Begin --------------------------*/

// C
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <string>
#include <math.h>
#include <time.h>
#include <ctype.h>
#include <cstdint>

// C++
#include <iostream>
#include <fstream>
#include <chrono>
#include <string>
#include <random>
#include <cmath>
#include <vector>
#include <map>
#include <set>
#include <stdint.h>
#include <mutex>
#include <chrono>
#include <iomanip>
#include <sstream>

/*------------------------  Include End  -------------------------*/

/*------------------------  Service Info Begin  --------------------------*/
/**
 *
 * @name:     atomic_0822_protocol_conversion_service
 * @chinese_name: 协议转换服务
 * @description: 将预处理数据转换为指定协议格式
 * @version: V1.0.0
 * @build_time: 2025-08-22 16:00:00
 * @license: MIT
 * @service_path: atomic_0822_protocol_conversion_service
 *
 * @resource_requirement:
 *         + cpu_architecture: x86_64
 *         + memory: 4GB
 *         + hard_disk: 50GB
 *
 * @developer:
 *      +name: twilight
 *      +email: twilight@atomic_0822_protocol_conversion_service.com
 * @maintainer:
 *      +name: twilight
 *      +email:twilight@atomic_0822_protocol_conversion_service.com
 * @operating_system:
 *      +name:Linux
 *      +v1:5.13.0-117-generic
 *      +v2:5.14.0-117-generic
 *      +name:SylixOS
 *      +v1:1.0.0
 *      +v2:1.0.2
 *
 *
 *
 */
/*------------------------  Service Info End  --------------------------*/

/*------------------------  Return Type Begin  --------------------------*/

#define ATOMIC_SERVICE_SUCCESS 0
#define ATOMIC_SERVICE_FAIL -1
#define ATOMIC_SERVICE_TIMEOUT -2
#define ATOMIC_SERVICE_ERROR -3
#define ATOMIC_SERVICE_NOT_SUPPORT -4
#define ATOMIC_SERVICE_NOT_READY -5
#define ATOMIC_SERVICE_NOT_INIT -6
#define ATOMIC_SERVICE_NOT_START -7
#define ATOMIC_SERVICE_NOT_STOP -8
#define ATOMIC_SERVICE_NOT_RELEASE -9
#define ATOMIC_SERVICE_NOT_DESTROY -10
#define ATOMIC_SERVICE_NOT_CREATE -11
#define ATOMIC_SERVICE_NOT_OPEN -12
#define ATOMIC_SERVICE_NOT_CLOSE -13
#define ATOMIC_SERVICE_NOT_READ -14
#define ATOMIC_SERVICE_NOT_WRITE -15
#define ATOMIC_SERVICE_NOT_SEEK -16
#define ATOMIC_SERVICE_NOT_TELL -17
#define ATOMIC_SERVICE_NOT_SIZE -18
#define ATOMIC_SERVICE_NOT_SEEK_END -19
#define ATOMIC_SERVICE_NOT_SEEK_SET -20
#define ATOMIC_SERVICE_NOT_SEEK_CUR -21
#define ATOMIC_SERVICE_NOT_SEEK_ABS -22

/*------------------------  Return Type End  --------------------------*/



/*------------------------  Message Info Begin  --------------------------*/

// 协议类型（用注释代替枚举）
// 0: 未知协议
// 1: MQTT协议（物联网通信）
// 2: HTTP协议（web通信）
// 3: TCP二进制协议（低延迟通信）
// 4: JSON-RPC协议（远程调用）

// 输入数据结构体（对接信号预处理服务输出）
typedef struct {
    int device_id;             // 设备ID
    int signal_type;           // 信号类型（对应预处理服务的信号类型）
    double timestamp;          // 时间戳(ms)
    double processed_val1;     // 处理后数据值1
    double processed_val2;     // 处理后数据值2
    double processed_val3;     // 处理后数据值3
    int valid_count;           // 有效数据数量
    int quality_score;         // 数据质量评分(0-100)
    int is_filtered;          // 是否经过滤波处理
} ConversionInput;

// 输出数据结构体
typedef struct {
    int device_id;             // 设备ID
    int protocol_type;         // 协议类型（0-4）
    double timestamp;          // 转换时间戳(ms)
    char data_buffer[1024];    // 转换后的协议数据缓冲区
    int buffer_length;         // 实际数据长度
    int is_compressed;        // 是否经过压缩
    int return_type;           // 返回状态类型

    std::string src_ip;    // 源IP地址
    std::string dest_ip;   // 目的IP地址
    int src_port;          // 源端口号
    int dest_port;         // 目的端口号
    int data_len;          // 传输数据长度
} ConversionOutput;


/*------------------------  Message Info End  --------------------------*/

// 协议类型常量定义
#define PROTOCOL_UNKNOWN 0
#define PROTOCOL_MQTT 1
#define PROTOCOL_HTTP 2
#define PROTOCOL_TCP_BIN 3
#define PROTOCOL_JSON_RPC 4

/*------------------------  Interface Declaration Begin  --------------------------*/

// 协议转换核心接口
// 输入：ConversionInput结构体指针, ConversionConfig结构体指针
// 输出：ConversionOutput结构体指针
// 返回：转换结果状态码（CONVERT_*）
int convertProtocol(ConversionInput *input, ConversionOutput *output);

/*------------------------  Interface Declaration End  --------------------------*/



#endif // _atomic_0822_protocol_conversion_service_H_
